Measuring motion in two or more dimensions is extremely useful in numerous applications. Computer input devices such as mice are but one example. In particular, a computer mouse typically provides input to a computer based on the amount and direction of mouse motion over a work surface (e.g., a desk top). Many existing mice employ an imaging array for determining movement. As the mouse moves across the work surface, small overlapping work surface areas are imaged. Processing algorithms within the mouse firmware then compare these images (or frames). In general, the relative motion of the work surface is calculated by correlating surface features common to overlapping portions of adjacent frames.
These and other optical motion tracking techniques work well in many circumstances. In some cases, however, there is room for improvement. Some types of surfaces can be difficult to image, or may lack sufficient surface features that are detectable using conventional techniques. For instance, some surfaces have features which are often undetectable unless expensive optics or imaging circuitry is used. Systems able to detect movement of such surfaces (without requiring expensive optics or imaging circuitry) would be advantageous.
The imaging array used in conventional techniques can also cause difficulties. In particular, conventional imaging techniques require a relatively large array of light-sensitive imaging elements. Although the array size may be small in absolute terms (e.g., approximately 1 mm by 1 mm), that size may consume a substantial portion of an integrated circuit (IC) die. The imaging array is often the most expensive part of the die, and costs could be reduced if smaller arrays could be used. Moreover, the imaging elements (or pixels) of conventional arrays are generally arranged in a single rectangular block that is square or near-square. When designing an integrated circuit for an imager, finding space for such a large single block can sometimes pose challenges. IC design would be simplified if the size of an array could be reduced and/or if there were more freedom with regard to arrangement of the array.
Another challenge posed by conventional imaging techniques involves the correlation algorithms used to calculate motion. These algorithms can be relatively complex, and may require a substantial amount of processing power. This can also increase cost for imaging ICs. Motion tracking techniques that require fewer and/or simpler computations would provide an advantage over current systems.
One possible alternative motion tracking technology utilizes a phenomenon known as laser speckle. Speckle, which results when a surface is illuminated with a coherent light source (e.g., a laser), is a granular or mottled pattern observable when a laser beam is diffusely reflected from a surface with a complicated structure. Speckling is caused by the interference between different portions of a laser beam as it is reflected from minute or microscopic surface features. A speckle pattern from a given surface will be random. However, for movements that are small relative to spot size of a laser beam, the change in a speckle pattern as a laser is moved across a surface is non-random.
As is known in the art, a line of photosensitive pixels can be used to determine one dimensional movement of a beam spot across a surface. As a laser beam is directed at the surface, a spot of light where the beam strikes the surface is reflected (with speckling) into the line of pixels. By measuring the intensity of light received in the pixels at numerous times, the movement of the surface relative to the pixels can be determined. For a line of n pixels having a pixel pitch (or spacing between pixels) of Δx, the spatial gradient SG between two pixels a and b as intensity readings are taken from those pixels at times t1 and t2 is approximated by Equation 1.
                    SG        =                              1            2                    *                                                    b                ⁢                                  (                                      t                    ⁢                                                                                  ⁢                    1                                    )                                            -                              a                ⁡                                  (                                      t                    ⁢                                                                                  ⁢                    1                                    )                                            +                              b                ⁡                                  (                                      t                    ⁢                                                                                  ⁢                    2                                    )                                            -                              a                ⁡                                  (                                      t                    ⁢                                                                                  ⁢                    2                                    )                                                                    Δ              ⁢                                                          ⁢              x                                                          Equation        ⁢                                  ⁢        1            
In Equation 1, a(t1) and b(t1) are the intensities of light received by pixels a and b at time t1; a(t2) and b(t2) are the intensities of light received by pixels a and b at time t2. The temporal gradient TG of the speckle intensity is approximated by Equation 2.
                    TG        =                              1            2                    *                                                    a                ⁡                                  (                                      t                    ⁢                                                                                  ⁢                    2                                    )                                            -                              a                ⁡                                  (                                      t                    ⁢                                                                                  ⁢                    1                                    )                                            +                              b                ⁡                                  (                                      t                    ⁢                                                                                  ⁢                    2                                    )                                            -                              b                ⁡                                  (                                      t                    ⁢                                                                                  ⁢                    1                                    )                                                                    Δ              ⁢                                                          ⁢              t                                                          Equation        ⁢                                  ⁢        2            
The quantity Δt is the time interval (i.e., sampling time) between t1 and t2. The velocity V of pixels a and b relative to the surface on which the laser is shined can be approximated by Equation 3.
                    V        =                  TG          SG                                    Equation        ⁢                                  ⁢        3            
If a similar approximation of V is obtained for all adjacent pixel pairs in the pixel line, those velocities can be combined using Equation 4.
                    V        =                                            ∑                              i                =                1                                            n                -                1                                      ⁢                                          SG                i                            *                              TG                i                                                                        ∑                              i                =                1                                            n                -                1                                      ⁢                                          (                                  SG                  i                                )                            2                                                          Equation        ⁢                                  ⁢        4            
In Equation 4, i is an index for a pixel pair in the pixel line. The displacement of the surface relative to the pixel line from time t1 to time t2 is simply V*Δt.